const db = require('../db/index')
// 加密用户密码
const bcrypt = require('bcryptjs')
// 用这个包来生成 Token 字符串
const jwt = require('jsonwebtoken')
const config = require('../config')

// 注册
exports.regUser = function (req, res) {
	// console.log(req.body)
	let userinfo = req.body
	// if (!userinfo.username || !userinfo.password) {
	// 	return res.cc('用户名或密码不能为空！')
	// }
	let sql = `SELECT * FROM ev_users WHERE username=?`
	db.query(sql, [userinfo.username], function (err, results) {
		// 执行 SQL 语句失败
		if (err) return res.cc(err)
		// 用户名被占用
		if (results.length > 0) return res.cc('用户名被占用，请更换其他用户名！')

		// 加密密码
		userinfo.password = bcrypt.hashSync(userinfo.password, 10)

		let sql_set = `INSERT INTO ev_users SET ?`
		db.query(sql_set, userinfo, function(err, results){
			// 执行 SQL 语句失败
			if (err) return res.cc(err)
			// SQL 语句执行成功，但影响行数不为 1
			if (results.affectedRows !== 1) {
				return res.cc('注册用户失败，请稍后再试！')
			}
			// 注册成功
			return res.cc('注册成功！', 0)
		})
	})
}

// 登录
exports.login = (req, res) => {
	let userinfo = req.body
	// console.log(userinfo)
	let sql = `SELECT * FROM ev_users WHERE username=?`
	db.query(sql, userinfo.username, function (err, results) {
		// sql 执行失败
		if (err) return res.cc(err)
		// sql 查询无数据
		if (results.length !== 1) return res.cc('用户名未注册！')
		let compareResult = bcrypt.compareSync(userinfo.password, results[0].password)
		if (!compareResult) return res.cc('密码输入错误！')
		let user = {...results[0], password: '', user_pic: ''}
		// console.log(user)
		let token = jwt.sign(user, config.jwtSecretKey, {expiresIn:config.expiresIn})
		res.send({
			status: 0,
			message: 'login success',
			token: 'Bearer ' + token
		})
	})
}